package com.wang.dao;

import com.wang.pojo.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * @author Mark
 * @date 2020/5/31 9:56
 * @description UserDao持久化
 */
public interface UserMapper {

    /**
     * 获取用户
     *
     * @return 全部用户
     */
    List<User> getUserList();

    /**
     * 根据id获取用户
     *
     * @param id 用户id
     * @return 查询id所属的用户
     */
    User getUserById(int id);

    /**
     * 插入用户
     *
     * @param user 用户
     * @return 成功插入为1 失败为0
     */
    int insertUser(User user);

    /**
     * 更新用户
     *
     * @param user 用户
     * @return 成功插入为1 失败为0
     */
    int updateUser(User user);

    /**
     * 删除用户
     *
     * @param id 用户
     * @return 成功插入为1 失败为0
     */
    int deleteUserById(int id);

    /**
     * 使用map插入用户
     *
     * @param map 传参map
     * @return 1成功0失败
     */
    int insertUserByMap(Map<String, Object> map);

    /**
     * 根据id获取用户
     *
     * @param map 用户id
     * @return 查询id所属的用户
     */
    User getUserByMap(Map<String, Object> map);

    /**
     * 使用like进行模糊查询
     *
     * @param like 条件
     * @return 集合
     */
    List<User> getUserLike(@Param("like") String like);

    /**
     * limit分支查询
     *
     * @param map index,pageSize
     * @return 所属的用户
     */
    List<User> getUserLimit(Map<String, Integer> map);

    /**
     * 使用rowBounds实现分页
     *
     * @return 用户集合
     */
    List<User> getUserLimitByRowBounds();

    /**
     * 根据id注解查询用户(CRUD省略)
     *
     * @param id 用户id
     * @return 用户
     */
    @Select("select * from mybatis.user where id =#{id}")
    User selectById(@Param("id") int id);

}
